home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #9 / Amiga Plus CD - 2004 - No. 09.iso / amigaplus / tools / amigaos4_only / ifxlite / imagefx3 / rexx / find.ifx < prev    next >
Text File  |  2004-08-03  |  1KB  |  65 lines

  1. /*
  2.  * $VER: Find 3.0 (13.2.98)
  3.  *
  4.  * Arexx program for the ImageFX image processing system.
  5.  * Written by Thomas Krehbiel
  6.  *
  7.  * This program will find and activate the nearest palette color for
  8.  * the pixel that the user clicks the mouse over.  Demonstrates the use
  9.  * of the WAITFOR command.
  10.  *
  11.  */
  12.  
  13. OPTIONS RESULTS
  14.  
  15. /* Save current color, because we're going to trash it */
  16. GetPalette '-1'
  17. PARSE VAR result oldr oldg oldb
  18.  
  19. LockInput ; LockGui
  20.  
  21. Message 'Select a location'
  22.  
  23. /* Pick color, wait for user to pick something */
  24. Pick
  25. WaitFor SELECTUP
  26.  
  27. /* Find out what we got, save it */
  28. GetPalette '-1'
  29. PARSE VAR result dstr dstg dstb
  30.  
  31. /* Restore original palette color */
  32. SetPalette '-1' oldr oldg oldb
  33.  
  34. UnlockGui
  35.  
  36. /* Now look through the palette for the closest match.  This is
  37.    a fairly elementary matching routine, since we don't happen
  38.    to have square roots available in standard REXX. */
  39.  
  40. bestdist = 999999
  41. bestcol = 0
  42.  
  43. BeginBar 'Finding' 1
  44.  
  45. DO i = 0 TO 31
  46.  
  47.    GetPalette i
  48.    PARSE VAR result r g b
  49.  
  50.    dist = ABS(r - dstr) + ABS(g - dstg) + ABS(b - dstb)
  51.    IF dist < bestdist THEN DO
  52.       bestdist = dist
  53.       bestcol = i
  54.       END
  55.  
  56.    END
  57.  
  58. EndBar
  59.  
  60. ActiveColor bestcol
  61.  
  62. UnlockInput
  63.  
  64. EXIT
  65.